package com.fbt.transfer.app.driver.util;

import android.util.Log;
import cn.hutool.core.text.CharSequenceUtil;

public class LogUtils {
    private static final String DEFAULT_TAG = "AppLog";
    private static boolean isLogEnabled = true; // 默认启用日志

    private LogUtils() {
        // 私有构造函数，防止实例化
    }

    /**
     * 设置是否启用日志
     *
     * @param enabled true启用日志，false禁用日志
     */
    public static void setLogEnabled(boolean enabled) {
        isLogEnabled = enabled;
    }

    /**
     * 记录DEBUG级别的日志
     *
     * @param tag     日志标签
     * @param message 日志消息
     */
    public static void d(String tag, String message) {
        if (isLogEnabled) {
            Log.d(tag, message);
        }
    }

    /**
     * 记录DEBUG级别的日志，使用默认标签
     *
     * @param message 日志消息
     */
    public static void d(String message) {
        d(DEFAULT_TAG, message);
    }

    /**
     * 记录INFO级别的日志
     *
     * @param tag     日志标签
     * @param message 日志消息
     */
    public static void i(String tag, String format, Object... args) {
        if (isLogEnabled) {
            Log.i(tag, CharSequenceUtil.format(format, args));
        }
    }

    /**
     * 记录INFO级别的日志，使用默认标签
     *
     * @param message 日志消息
     */
    public static void i(String format, Object... args) {
        i(DEFAULT_TAG, CharSequenceUtil.format(format, args));
    }

    /**
     * 记录WARNING级别的日志
     *
     * @param tag     日志标签
     * @param message 日志消息
     */
    public static void w(String tag, String message) {
        if (isLogEnabled) {
            Log.w(tag, message);
        }
    }

    /**
     * 记录WARNING级别的日志，使用默认标签
     *
     * @param message 日志消息
     */
    public static void w(String message) {
        w(DEFAULT_TAG, message);
    }

    /**
     * 记录ERROR级别的日志
     *
     * @param tag     日志标签
     * @param message 日志消息
     */
    public static void e(String tag, String message) {
        if (isLogEnabled) {
            Log.e(tag, message);
        }
    }

    /**
     * 记录ERROR级别的日志，使用默认标签
     *
     * @param message 日志消息
     */
    public static void e(String message) {
        e(DEFAULT_TAG, message);
    }

    /**
     * 记录ERROR级别的日志，包含异常信息
     *
     * @param tag     日志标签
     * @param message 日志消息
     * @param throwable 异常对象
     */
    public static void e(String tag, String message, Throwable throwable) {
        if (isLogEnabled) {
            Log.e(tag, message, throwable);
        }
    }

    /**
     * 记录ERROR级别的日志，使用默认标签，包含异常信息
     *
     * @param message 日志消息
     * @param throwable 异常对象
     */
    public static void e(String message, Throwable throwable) {
        e(DEFAULT_TAG, message, throwable);
    }
}
